<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // <!-- 块级作用域 -->
        // {
        //     let age = 18;
        //     console.log(age);//18
        // }

        // // 超出age 的作用域
        // // console.log(age);//报错

        // let flag = true;
        // if (flag) {
        //     let str = 'hello worde';
        //     console.log(str);//hello worde
        // }
        // // console.log(str);//报错

        // for (let i = 0; i <= 6; i++) {
        //     console.log(i);
        // }
        // // console.log(i);//报错


        // 全局变量 name
        // const name = '小明'

        // // 函数作用域中访问全局
        // function sayHi() {
        //     // 此处为局部
        //     console.log('你好' + name)
        // }
        // sayHi()//你好小明

        // 闭包
        // function bibao() {
        //     let count = 1;
        //     function fn() {
        //         count++
        //         console.log('这是第', count + '次');
        //     }
        //     return fn
        // }
        // const re = bibao()
        // // const re = function fn() {
        // //     count++
        // //     console.log('这是第', count + '次');
        // // }
        // re()

        // function createClosure() {
        //     let largeData = new Array(1000000).fill('memory leak example');
        //     return function () {
        //         console.log(largeData[0]);
        //     };
        // }

        // const closure = createClosure();
        // 这个闭包始终引用着大量数据，即使在不需要时，largeData也无法被回收

        // function sum() {
        //     let s = 0;
        //     for (let i = 0; i < arguments.length; i++) {
        //         s += arguments[i]
        //     }
        //     console.log(s);
        // }
        // sum(5, 10)//15
        // sum(1, 2, 3, 4, 5)//15

        // 剩余参数
        // function config(base, ...outher) {
        //     console.log(base);//http://baidu.com
        //     console.log(...outher);//'get', 'json'
        // }
        // config('http://baidu.com', 'get', 'json')

        // const getsum = (...arr) => {
        //     let sum = 0;
        //     for (let i = 0; i < arr.length; i++) {
        //         sum += arr[i]
        //     }
        //     return sum
        // }
        // const resule = getsum(1, 2, 3, 4, 5)
        // console.log(resule);


        // const obj = {
        //     uname: 'ssss老师',
        //     sayHi: function () {
        //         console.log(this)  // obj
        //         let i = 10
        //         const count = () => {
        //             console.log(this)  // obj  谁调用this指向就是谁
        //         }
        //         count()
        //     }
        // }
        // obj.sayHi()


        // 数组解构
        // let arr = [1, 2, 3]

        // let [a, b, c] = arr
        // console.log(a);//1
        // console.log(b);//2
        // console.log(c);//3

        const user = {
            name: '小明',
            age: 18
        }
        const { name, age } = user
        console.log(name);//小明
        console.log(age);//18

    </script>

</body>

</html>